<?php
namespace App\Domain\Phalapitencentsms;

use TencentCloud\Common\Credential;
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Profile\HttpProfile;
use TencentCloud\Sms\V20210111\SmsClient;
use TencentCloud\Sms\V20210111\Models\SendSmsRequest;

class Main
{
    /**
     * 发送腾讯云短信
     * @param string $phoneNumbers 接收短信的手机号码
     * @param string $templateId 短信模板ID
     * @param array $templateParam 短信模板参数
     * @param string $sdkAppId 短信SdkAppId
     * @param string $signName 短信签名名称
     * @return mixed
     */
    public function tencentSendSms($phoneNumbers, $templateId, $templateParam, $sdkAppId, $signName)
    {
        // 固定 SecretId 和 SecretKey，需替换为实际值
        $secretId = 'AKIDjMq7D4i9d0A6oIYaOxIQL261iCcsuhGj';
        $secretKey = 'ILAmCOL3Xnob9VcU8Yj0CLYgbIm24sUu';

        // 实例化一个认证对象，入参需要传入腾讯云账户 SecretId 和 SecretKey
        $cred = new Credential($secretId, $secretKey);
        // 实例化一个 http 选项，可选的，没有特殊需求可以跳过
        $httpProfile = new HttpProfile();
        $httpProfile->setEndpoint("sms.tencentcloudapi.com");

        // 实例化一个 client 选项，可选的，没有特殊需求可以跳过
        $clientProfile = new ClientProfile();
        $clientProfile->setHttpProfile($httpProfile);
        // 实例化要请求产品的 client 对象,clientProfile 是可选的
        $client = new SmsClient($cred, "ap-guangzhou", $clientProfile);

        // 实例化一个请求对象,每个接口都会对应一个 request 对象
        $req = new SendSmsRequest();
        $params = array(
            "PhoneNumberSet" => array($phoneNumbers),
            "SmsSdkAppId" => $sdkAppId,
            "TemplateId" => $templateId,
            "SignName" => $signName,
            "TemplateParamSet" => $templateParam
        );
        $req->fromJsonString(json_encode($params));

        // 返回的resp是一个SendSmsResponse的实例，与请求对象对应
        $resp = $client->SendSms($req);
        return $resp->toJsonString();
    }
}